import Vue from 'vue'
// 导入 veeValidate插件
import VeeValidate, { Validator } from 'vee-validate'
// 导入VeeValidate提供的语言包
import zh from 'vee-validate/dist/locale/zh_CN'

// 手机号正则
const phoneReg = /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/
// 验证码正则
const codeReg = /^\d{6}$/
// 密码正则
const pwdReg = /^\w{6,21}$/

// 当成插件使用
Vue.use(VeeValidate)

Validator.localize('zh', zh)

// 实现对手机号的验证
// 第一个参数: 自定义规则的名称 '规则名'
// 第二个参数: (对象)里面存放 自定义的验证规则
// Validator.extend('phone', {
//   // validate方法对表单进行验证,内部返回的是一个布尔值
//   // value 参数: 值是对应表单的值
//   // args 参数: 值是自定义的数据
//   validate(value, args) {
//     // 内部必须 通过 return 返回验证的结果,要求是一个布尔值
//     return phoneReg.test(value)
//   },
//   // 就是抛出错误的提示
//   // field 参数: 值是表单中的name属性
//   getMessage(field, args) {
//     // 内部必须 通过 return 返回一个验证错误的提示信息
//     return '手机号不合法'
//   }
// })
// 手机号的验证规则
Validator.extend('phone', {
  validate: (value) => phoneReg.test(value), // 验证规则，value是我们输入的值
  getMessage: (filed) => '手机号格式不合法！' // 验证失败的回调
})

// 验证必要性的规则
Validator.extend('required', {
  validate: (value) => value, // 验证规则，value是我们输入的值
  getMessage: (field) => field + '必须输入！' // 验证失败的回调
})

// 验证码的验证规则
Validator.extend('code', {
  validate: (value) => codeReg.test(value), // 验证规则
  getMessage: (filed) => '验证码必须为6位数字！' // 验证失败的回调
})

// 密码的验证规则
Validator.extend('pwd', {
  validate: (value) => pwdReg.test(value), // 验证规则
  getMessage: (filed) => '密码为6到21位英文、数字、下划线' // 验证失败的回调
})

// 重复密码的验证规则
Validator.extend('ispwd', {
  validate: (value, args) => value === args[0], // 验证规则
  getMessage: (filed) => '重复密码必须和登录密码一致' // 验证失败的回调
})

// 协议规则
Validator.extend('isagree', {
  validate: (value) => value, // 验证规则
  getMessage: (filed) => '协议必须同意！' // 验证失败的回调
})
